package com.cctc.config.advice;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Name GlobalWebDataBinderAdvice
 * @Description: 全局 Web 数据绑定配置
 * @Author: lichao
 * @Email: li2chao@126.com
 * @Date: 2024-01-24 17:48:33
 **/
@RestControllerAdvice(basePackages = "com.cctc.controller")
public class GlobalWebDataBinderAdvice {

    /**
     * 全局 Web 数据绑定配置
     * @param dataBinder 全局数据绑定配置类
     * @author lichao
     * @email li2chao@126.com
     * @date 2024/01/24 17:57:48
     */
    @InitBinder
    public void initBinder(WebDataBinder dataBinder) {
        // 1. 注册自定义日期格式化编辑器
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
        // 2. 注册自定义日期格式化类
        dataBinder.addCustomFormatter(new DateFormatter("yyyy-MM-dd"));
        // 3. 注册允许绑定的 POJO 属性
        dataBinder.setAllowedFields("name", "age", "...");
        // ... 其他配置 ...
    }


}

